<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>


<script>
    // 箭头函数不绑定 this  箭头函数没有自己的this关键字
    // 如果在箭头函数中使用this, this关键字将指向箭头函数定义位置中的this

    function fn() {
        console.log(this)
        // 箭头函数定义在了 fn 内部, 那么箭头函数里面的this, 就指向了fn的this
        return () => {
            console.log(this)
        }
    }

    const obj = {name: 'tom'};

    let resFn = fn.call(obj);
    resFn();


    console.log("-------------------------")
    fn()();     // window


    /**
     * 面试题
     * 对象能产生作用域吗 ? 不能
     * 所以这个 foo对象里面的 say() 箭头函数 定义在全局作用域上 window
     */

    let age = 20;

    let foo = {
        age: 20,
        // 注意:
        say: () => {
            alert(this.age);
        }
    }

    foo.say();

    console.log(window.age) // undefined
</script>
</body>
</html>
